import http from "@/utils/http";

/**
 * 小程序登录请求体
 */
export interface LoginWxMinData {
  /**
   * code 通过 wx.login() 获取
   */
  code: string;
  /**
   * 通过 getphonenumber 事件回调中获取
   */
  encryptedData?: string;
  /**
   * 通过 getphonenumber 事件回调中获取
   */
  iv?: string;
}

/**
 * 用户信息
 */
export interface LoginWxMinResult {
  /**
   * 用户名
   */
  account: string;
  /**
   * 用户头像
   */
  avatar: string;
  /**
   * 用户id
   */
  id: number;
  /**
   * 用户手机号
   */
  mobile: string;
  /**
   * 用户昵称
   */
  nickname: null | string;
  /**
   * 用于后续接口调用的token，有效期三天
   */
  token: string;
}

/**
 * 微信登录接口
 * @param data
 * @returns
 */
export const loginWxMin = (data: LoginWxMinData) => {
  return http<LoginWxMinResult>({
    url: "/login/wxMin",
    method: "POST",
    data,
  });
};

/**
 * 小程序登录 用户信息
 */
export interface LoginResult {
  /**
   * 用户名
   */
  account: string;
  /**
   * 用户头像
   */
  avatar: string;
  /**
   * 用户id
   */
  id: number;
  /**
   * 用户手机号
   */
  mobile: string;
  /**
   * 用户昵称
   */
  nickname: null | string;
  /**
   * 用于后续接口调用的token，有效期三天
   */
  token: string;
}

/**
 * 小程序模拟登录 用户信息
 */
export const loginWxMinSimple = (phoneNumber: string) => {
  return http<LoginResult>({
    url: "/login/wxMin/simple",
    method: "POST",
    data: {
      phoneNumber,
    },
  });
};